package ar.edu.utn.frgp.EjemploHibernate.action.cuentas;

import java.util.Date;

import ar.edu.utn.frgp.EjemploHibernate.model.Cuenta;
import ar.edu.utn.frgp.EjemploHibernate.service.RecursoService;

import com.opensymphony.xwork2.ActionSupport;

public class AgregarCuentaAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	private RecursoService service;
	private Cuenta cuenta = new Cuenta();
	private int idCuenta;
	private String dni;
	private Date fCreacion;
	private String tipoCuenta;
	private double saldo;
	private double descubierto;
	private String estado;

	@Override
	public String execute() {
		try {

			// validar el tipo de cuenta a crear
			int cant = 0;

			if (tipoCuenta.equals("CUENTA CORRIENTE")) {

				// validar cantidad de cuentas corrientes creadas
				cant = service.getCantidadCuentaCorriente(dni);
				if (cant >= 5) {
					return ERROR;
				} else {
					descubierto = 900.00;
				}
			} else if (tipoCuenta.equals("CAJA DE AHORRO")) {
				// validar cantidad de cajas de ahorro creadas
				cant = service.getCantidadCajaAhorro(dni);
				if (cant >= 1) {
					return ERROR;
				} else {
					descubierto = 0.00;
				}
			}

			// settear parametros para cuenta

			idCuenta = service.getMaxidCuenta() + 1;
			// Fecha de hoy
			fCreacion = new Date();
			saldo = 0.00;
			estado = "HABILITADA";

			// setear Cuenta
			cuenta.setIdCuenta(idCuenta);
			cuenta.setDni(dni);
			cuenta.setfCreacion(fCreacion);
			cuenta.setTipoCuenta(tipoCuenta);
			cuenta.setSaldo(saldo);
			cuenta.setDescubierto(descubierto);
			cuenta.setEstado(estado);

			// Crear La Cuenta
			service.crearCuenta(cuenta);
			return SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ERROR;
		}
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public void setService(RecursoService service) {
		this.service = service;
	}

	public void setCuenta(Cuenta cuenta) {
		this.cuenta = cuenta;
	}

	public void setIdCuenta(int idCuenta) {
		this.idCuenta = idCuenta;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}

	public void setfCreacion(Date fCreacion) {
		this.fCreacion = fCreacion;
	}

	public void setTipoCuenta(String tipoCuenta) {
		this.tipoCuenta = tipoCuenta;
	}

	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}

	public void setDescubierto(double descubierto) {
		this.descubierto = descubierto;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

}
